home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 007 / tctutor2.arc / UNION2.C < prev    next >
C/C++ Source or Header  |  1987-07-04  |  2KB  |  56 lines

  1.                                          /* Chapter 11 - Program 6 */
  2. #define AUTO 1
  3. #define BOAT 2
  4. #define PLANE 3
  5. #define SHIP 4
  6.  
  7. main()
  8. {
  9. struct automobile {  /* structure for an automobile         */
  10.    int tires;
  11.    int fenders;
  12.    int doors;
  13. };
  14.  
  15. typedef struct {     /* structure for a boat or ship        */
  16.    int displacement;
  17.    char length;
  18. } BOATDEF;
  19.  
  20. struct {
  21.    char vehicle;         /* what type of vehicle?           */
  22.    int weight;           /* gross weight of vehicle         */
  23.    union {               /* type-dependent data             */
  24.       struct automobile car;      /* part 1 of the union    */
  25.       BOATDEF boat;               /* part 2 of the union    */
  26.       struct {
  27.          char engines;
  28.          int wingspan;
  29.       } airplane;                 /* part 3 of the union    */
  30.       BOATDEF ship;               /* part 4 of the union    */
  31.    } vehicle_type;
  32.    int value;            /* value of vehicle in dollars     */
  33.    char owner[32];       /* owners name                     */
  34. } ford, sun_fish, piper_cub;   /* three variable structures */
  35.  
  36.        /* define a few of the fields as an illustration     */
  37.  
  38.    ford.vehicle = AUTO;
  39.    ford.weight = 2742;              /* with a full gas tank */
  40.    ford.vehicle_type.car.tires = 5;  /* including the spare */
  41.    ford.vehicle_type.car.doors = 2;
  42.  
  43.    sun_fish.value = 3742;           /* trailer not included */
  44.    sun_fish.vehicle_type.boat.length = 20;
  45.  
  46.    piper_cub.vehicle = PLANE;
  47.    piper_cub.vehicle_type.airplane.wingspan = 27;
  48.  
  49.    if (ford.vehicle == AUTO) /* which it is in this case */
  50.       printf("The ford has %d tires.\n",ford.vehicle_type.car.tires);
  51.  
  52.    if (piper_cub.vehicle == AUTO) /* which it is not in this case */
  53.       printf("The plane has %d tires.\n",piper_cub.vehicle_type.
  54.              car.tires);
  55. }
  56.